common.skill

ফাইল হ্যান্ডলিং

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming)
307
307

ফাইল হ্যান্ডলিং হলো এমন একটি প্রক্রিয়া যার মাধ্যমে C++ প্রোগ্রামিং ভাষায় প্রোগ্রাম থেকে বিভিন্ন ধরনের ফাইল তৈরি, পড়া, লেখা, এবং মুছে ফেলা সম্ভব হয়। ফাইল হ্যান্ডলিং ব্যবহার করে আমরা ডেটা সংরক্ষণ এবং রিট্রিভ করতে পারি, যা প্রোগ্রামের আউটপুট সংরক্ষণ বা ইনপুট হিসেবে ব্যবহার করার জন্য অত্যন্ত কার্যকর।

C++ এ ফাইল হ্যান্ডলিং করার জন্য fstream লাইব্রেরি ব্যবহৃত হয়, যা তিনটি ক্লাস সরবরাহ করে:

  1. ifstream: ইনপুট ফাইল স্ট্রিম, অর্থাৎ ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়।
  2. ofstream: আউটপুট ফাইল স্ট্রিম, অর্থাৎ ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়।
  3. fstream: ইনপুট এবং আউটপুট উভয় ক্ষেত্রে ব্যবহৃত হয়।

ফাইল হ্যান্ডলিংয়ের ধাপসমূহ

  1. ফাইল খোলা (Opening a File)
  2. ফাইল লেখা (Writing to a File)
  3. ফাইল পড়া (Reading from a File)
  4. ফাইল বন্ধ করা (Closing a File)

ফাইল খোলা

ফাইল খোলার জন্য open() ফাংশন বা কনস্ট্রাক্টর ব্যবহার করা হয়। ফাইল খোলার সময় বিভিন্ন মোড ব্যবহার করা যায়:

  • ios::in: ফাইলটি ইনপুট মোডে খোলে (পড়ার জন্য)।
  • ios::out: ফাইলটি আউটপুট মোডে খোলে (লেখার জন্য)।
  • ios::app: ফাইলটি অ্যাপেন্ড মোডে খোলে (লেখার জন্য, পূর্বের ডেটা মুছে ফেলে না)।
  • ios::trunc: ফাইল খোলার সময় পুরানো ডেটা মুছে ফেলে (ডিফল্ট মোড)।
  • ios::binary: ফাইলটি বাইনারি মোডে খোলে।

উদাহরণ: ফাইলে লেখা এবং পড়া

ফাইলে লেখা (Writing to a File)

cpp

Copy code

#include <iostream>
#include <fstream> // fstream লাইব্রেরি অন্তর্ভুক্ত
using namespace std;

int main() {
    ofstream outFile; // ofstream অবজেক্ট তৈরি
    outFile.open("example.txt"); // ফাইল খোলা

    if (outFile.is_open()) {
        outFile << "Hello, World!" << endl; // ফাইলে লেখা
        outFile << "This is a file handling example." << endl;
        outFile.close(); // ফাইল বন্ধ করা
        cout << "Data written to file successfully!" << endl;
    } else {
        cout << "Failed to open the file." << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে example.txt নামে একটি ফাইল খোলা হয়েছে ios::out মোডে (লেখার জন্য)।
  • outFile স্ট্রিম অবজেক্ট ব্যবহার করে ফাইলে দুটি লাইন লেখা হয়েছে এবং শেষে close() ফাংশন ব্যবহার করে ফাইলটি বন্ধ করা হয়েছে।

ফাইলে পড়া (Reading from a File)

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ifstream inFile; // ifstream অবজেক্ট তৈরি
    inFile.open("example.txt"); // ফাইল খোলা

    if (inFile.is_open()) {
        string line;
        while (getline(inFile, line)) { // ফাইল থেকে এক লাইন করে পড়া
            cout << line << endl;
        }
        inFile.close(); // ফাইল বন্ধ করা
    } else {
        cout << "Failed to open the file." << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে example.txt ফাইলটি ios::in মোডে খোলা হয়েছে (পড়ার জন্য)।
  • getline() ফাংশন ব্যবহার করে ফাইল থেকে এক লাইন করে পড়া হয়েছে এবং কনসোলে আউটপুট হিসেবে প্রদর্শন করা হয়েছে।

ফাইলের মোড নির্ধারণ এবং অ্যাপেন্ড মোডে লেখা

ফাইলের মোড নির্ধারণ করে ফাইলকে অ্যাপেন্ড মোডে খুললে ফাইলের পূর্বের ডেটা মুছে ফেলা হয় না বরং নতুন ডেটা সংযুক্ত করা হয়।

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ofstream outFile("example.txt", ios::app); // অ্যাপেন্ড মোডে ফাইল খোলা

    if (outFile.is_open()) {
        outFile << "Appending new line to the file." << endl;
        outFile.close();
        cout << "Data appended to file successfully!" << endl;
    } else {
        cout << "Failed to open the file." << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে example.txt ফাইল ios::app মোডে খোলা হয়েছে, যার ফলে নতুন ডেটা আগের ডেটার সাথে যোগ করা হয়েছে।

বাইনারি মোডে ফাইল হ্যান্ডলিং

বাইনারি মোডে ফাইল হ্যান্ডলিং সাধারণত বাইনারি ডেটা (যেমন ইমেজ, ভিডিও, ইত্যাদি) পড়া বা লেখার ক্ষেত্রে ব্যবহৃত হয়।

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ofstream outFile("binaryfile.bin", ios::binary);
    int num = 100;

    if (outFile.is_open()) {
        outFile.write(reinterpret_cast<char*>(&num), sizeof(num)); // বাইনারি ফর্ম্যাটে লেখা
        outFile.close();
    }

    ifstream inFile("binaryfile.bin", ios::binary);
    int readNum = 0;

    if (inFile.is_open()) {
        inFile.read(reinterpret_cast<char*>(&readNum), sizeof(readNum)); // বাইনারি ফর্ম্যাটে পড়া
        inFile.close();
        cout << "Number read from binary file: " << readNum << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে binaryfile.bin নামে একটি ফাইল বাইনারি মোডে খোলা হয়েছে এবং num ভ্যারিয়েবলের মান ফাইলে লেখা হয়েছে।
  • ফাইল থেকে সেই বাইনারি ডেটা পড়া হয়েছে এবং readNum ভ্যারিয়েবলে সংরক্ষিত করা হয়েছে।

ফাইল অপারেশনের চেকিং ফাংশন

  1. is_open(): ফাইলটি সঠিকভাবে খোলা হয়েছে কিনা তা পরীক্ষা করে।
  2. eof(): ফাইলের শেষ পৌঁছেছে কিনা তা চেক করে।
  3. fail(): ফাইল খোলার বা অপারেশনের কোনো সমস্যা হয়েছে কিনা তা পরীক্ষা করে।
  4. good(): ফাইলটি সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করে।

সারসংক্ষেপ

  • ifstream: ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়।
  • ofstream: ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়।
  • fstream: একই সাথে ফাইল পড়া ও লেখার জন্য ব্যবহৃত হয়।
  • মোড: ফাইলের মোড নির্ধারণ করে (যেমন ios::in, ios::out, ios::app, ios::binary ইত্যাদি) বিভিন্ন অপারেশন করা যায়।

ফাইল হ্যান্ডলিং প্রোগ্রামিংয়ে গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এটি প্রোগ্রামের ডেটা সংরক্ষণ এবং রিট্রিভ করতে সহায়ক।

common.content_added_by

ফাইল খোলা, পড়া এবং লেখা

225
225

C++ এ ফাইল খোলা, পড়া এবং লেখা ফাইল পরিচালনার মৌলিক কাজগুলোর মধ্যে অন্তর্ভুক্ত। C++ এ ফাইল পরিচালনা করতে fstream লাইব্রেরি ব্যবহার করা হয়, যা ifstream (ইনপুট ফাইল স্ট্রিম), ofstream (আউটপুট ফাইল স্ট্রিম), এবং fstream (ইনপুট ও আউটপুট উভয়) ক্লাসের মাধ্যমে ফাইল খোলা, পড়া এবং লেখার কাজটি সম্পন্ন করে।

১. ফাইল খোলা

ফাইল খোলার জন্য fstream, ifstream বা ofstream ক্লাস ব্যবহার করে অবজেক্ট তৈরি করা হয় এবং ফাইলের নাম পাস করে সেই ফাইল খোলা যায়। ফাইল খোলার বিভিন্ন মোড রয়েছে, যেমন:

  • ios::in: পড়ার জন্য ফাইল খোলা (ডিফল্ট ifstream এ)
  • ios::out: লেখার জন্য ফাইল খোলা (ডিফল্ট ofstream এ)
  • ios::app: ফাইলের শেষে লেখার জন্য খোলা (append mode)
  • ios::trunc: ফাইল খোলার সময় বিদ্যমান তথ্য মুছে ফেলে নতুন করে লেখার জন্য খোলা

২. ফাইলে লেখা (Writing to a File)

ফাইলে লেখার জন্য ofstream বা fstream ব্যবহার করা হয় এবং << অপারেটর ব্যবহার করে ডেটা ফাইলে লেখা হয়।

উদাহরণ: ফাইলে লেখা

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ofstream outFile("example.txt"); // ফাইল খোলা লেখার জন্য

    if (outFile.is_open()) {
        outFile << "Hello, World!" << endl;
        outFile << "This is a test file." << endl;
        outFile.close(); // ফাইল বন্ধ করা
        cout << "Data written to file successfully." << endl;
    } else {
        cout << "Unable to open file for writing." << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে "example.txt" নামে একটি ফাইল খোলা হয়েছে লেখার জন্য।
  • outFile << "Hello, World!" << endl; দিয়ে ডেটা ফাইলে লেখা হয়েছে।
  • outFile.close(); দিয়ে ফাইল বন্ধ করা হয়েছে।

৩. ফাইল থেকে পড়া (Reading from a File)

ফাইল থেকে পড়ার জন্য ifstream বা fstream ব্যবহার করা হয় এবং >> অপারেটর বা getline() ফাংশন ব্যবহার করে ডেটা পড়া হয়।

উদাহরণ: ফাইল থেকে পড়া

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
    ifstream inFile("example.txt"); // ফাইল খোলা পড়ার জন্য
    string line;

    if (inFile.is_open()) {
        while (getline(inFile, line)) { // প্রতিটি লাইন পড়া
            cout << line << endl;
        }
        inFile.close(); // ফাইল বন্ধ করা
    } else {
        cout << "Unable to open file for reading." << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে "example.txt" ফাইলটি পড়ার জন্য খোলা হয়েছে।
  • getline(inFile, line); দিয়ে প্রতিটি লাইন পড়ে line স্ট্রিংয়ে সংরক্ষণ করা হয়েছে এবং তারপর cout দিয়ে আউটপুটে প্রদর্শন করা হয়েছে।
  • inFile.close(); দিয়ে ফাইল বন্ধ করা হয়েছে।

৪. ফাইলে অ্যাপেন্ড মোডে লেখা (Appending to a File)

ফাইলে অ্যাপেন্ড মোডে লেখা হলে আগের ডেটা মুছে না ফেলে নতুন ডেটা যোগ করা যায়।

উদাহরণ: ফাইলে অ্যাপেন্ড মোডে লেখা

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ofstream outFile("example.txt", ios::app); // ফাইল খোলা অ্যাপেন্ড মোডে

    if (outFile.is_open()) {
        outFile << "Adding new line to the file." << endl;
        outFile.close(); // ফাইল বন্ধ করা
        cout << "Data appended to file successfully." << endl;
    } else {
        cout << "Unable to open file for appending." << endl;
    }

    return 0;
}

বর্ণনা:

  • "example.txt" ফাইলটি ios::app মোডে খোলা হয়েছে, যা আগের ডেটা না মুছে শেষে নতুন ডেটা যোগ করে।
  • নতুন লাইন "Adding new line to the file." ফাইলে লেখা হয়েছে।

৫. ফাইল অপারেশনগুলো চেক করা

ফাইল খোলা, পড়া বা লেখার সময় প্রোগ্রাম চলাকালে ফাইল ওপেন বা অপারেশন সফল হয়েছে কিনা তা যাচাই করা গুরুত্বপূর্ণ।

ফাইল চেক করার পদ্ধতি

  • is_open(): ফাইল খোলা হয়েছে কিনা তা যাচাই করে। যদি খোলা থাকে, তবে এটি true রিটার্ন করে।
  • eof(): ফাইলের শেষ পর্যন্ত পৌঁছেছে কিনা তা চেক করে।
  • fail(): ফাইল অপারেশন ব্যর্থ হয়েছে কিনা তা যাচাই করে।

উদাহরণ: ফাইল অপারেশন চেক করা

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ifstream inFile("example.txt");

    if (!inFile.is_open()) {
        cout << "Error opening file!" << endl;
        return 1;
    }

    string word;
    while (inFile >> word) {
        cout << word << " ";
    }

    if (inFile.eof()) {
        cout << "\nReached end of file." << endl;
    }

    inFile.close();
    return 0;
}

বর্ণনা:

  • এখানে is_open() চেক করা হয়েছে, যাতে ফাইল খোলার সমস্যার ক্ষেত্রে ব্যবহারকারীকে তা জানানো যায়।
  • while (inFile >> word) এর মাধ্যমে শব্দ ধরে ধরে পড়া হয়েছে।
  • ফাইলের শেষ পর্যন্ত পৌঁছালে eof() ব্যবহার করে তা নির্দেশ করা হয়েছে।

সারসংক্ষেপ

  1. ফাইল খোলা: ifstream বা ofstream ব্যবহার করে ফাইল খোলা যায়।
  2. ফাইলে লেখা: << অপারেটর বা ofstream ব্যবহার করে ফাইলে লেখা যায়।
  3. ফাইল থেকে পড়া: >> অপারেটর বা getline() ফাংশন ব্যবহার করে ফাইল থেকে পড়া যায়।
  4. ফাইলে অ্যাপেন্ড: ios::app মোডে ফাইল খোলা হলে ডেটা ফাইলের শেষে যোগ হয়।

ফাইল অপারেশনগুলো প্রোগ্রামিংয়ে তথ্য সংরক্ষণ এবং ডেটা ব্যবস্থাপনার ক্ষেত্রে অত্যন্ত কার্যকর। ফাইলের সাথে কাজ করার সময় ফাইল খোলা এবং বন্ধ করার বিষয়টি সঠিকভাবে নিশ্চিত করা প্রয়োজন।

common.content_added_by

ifstream, ofstream এবং fstream এর ব্যবহার

240
240

ifstream, ofstream, এবং fstream হলো C++ এ ফাইল হ্যান্ডলিং করার জন্য ব্যবহৃত তিনটি প্রধান ক্লাস, যা fstream লাইব্রেরির অংশ। এগুলোর সাহায্যে ফাইল থেকে ডেটা পড়া, ফাইলে ডেটা লেখা এবং একই সাথে ফাইল পড়া ও লেখা করা যায়।

1. ifstream (Input File Stream)

ifstream ক্লাস ব্যবহার করে ফাইল থেকে ডেটা পড়া হয়। এটি ইনপুট মোডে কাজ করে এবং শুধুমাত্র read অপারেশন পরিচালনা করতে পারে।

উদাহরণ: ifstream এর মাধ্যমে ফাইল থেকে পড়া

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ifstream inputFile("example.txt"); // ফাইল খোলা ifstream অবজেক্ট দিয়ে

    if (!inputFile) {
        cout << "Error opening file!" << endl;
        return 1;
    }

    string line;
    while (getline(inputFile, line)) { // ফাইল থেকে এক লাইন করে পড়া
        cout << line << endl;
    }

    inputFile.close(); // ফাইল বন্ধ করা
    return 0;
}

বর্ণনা:

  • এখানে example.txt ফাইলটি ifstream অবজেক্ট inputFile ব্যবহার করে খোলা হয়েছে।
  • getline() ফাংশনের মাধ্যমে এক লাইন করে পড়া হয়েছে এবং কনসোলে প্রিন্ট করা হয়েছে।
  • ফাইল অপারেশন শেষে close() ফাংশন ব্যবহার করে ফাইলটি বন্ধ করা হয়েছে।

2. ofstream (Output File Stream)

ofstream ক্লাস ব্যবহার করে ফাইলে ডেটা লেখা হয়। এটি আউটপুট মোডে কাজ করে এবং শুধুমাত্র write অপারেশন পরিচালনা করতে পারে।

উদাহরণ: ofstream এর মাধ্যমে ফাইলে লেখা

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ofstream outputFile("example.txt"); // ফাইল খোলা ofstream অবজেক্ট দিয়ে

    if (!outputFile) {
        cout << "Error opening file!" << endl;
        return 1;
    }

    outputFile << "Hello, World!" << endl; // ফাইলে লেখা
    outputFile << "C++ File Handling Example." << endl;

    outputFile.close(); // ফাইল বন্ধ করা
    cout << "Data written to file successfully!" << endl;
    return 0;
}

বর্ণনা:

  • এখানে example.txt ফাইলটি ofstream অবজেক্ট outputFile ব্যবহার করে খোলা হয়েছে।
  • outputFile ব্যবহার করে ফাইলে কিছু টেক্সট লেখা হয়েছে।
  • close() ফাংশন ব্যবহার করে ফাইলটি বন্ধ করা হয়েছে।

3. fstream (File Stream)

fstream ক্লাস ব্যবহার করে একই ফাইলে ইনপুট এবং আউটপুট উভয় ধরনের অপারেশন করা যায়। এটি ইনপুট এবং আউটপুট উভয় মোডে কাজ করতে সক্ষম।

উদাহরণ: fstream এর মাধ্যমে ফাইল পড়া ও লেখা

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    fstream file("example.txt", ios::in | ios::out | ios::app); // ফাইল খোলা fstream অবজেক্ট দিয়ে, ইনপুট, আউটপুট এবং অ্যাপেন্ড মোডে

    if (!file) {
        cout << "Error opening file!" << endl;
        return 1;
    }

    // ফাইলে লেখা
    file << "Adding a new line to the file." << endl;

    // ফাইলের শুরুতে যাওয়া
    file.seekg(0);

    // ফাইল থেকে পড়া
    string line;
    while (getline(file, line)) {
        cout << line << endl;
    }

    file.close(); // ফাইল বন্ধ করা
    return 0;
}

বর্ণনা:

  • এখানে example.txt ফাইলটি fstream অবজেক্ট file ব্যবহার করে খোলা হয়েছে এবং এটি ইনপুট, আউটপুট এবং অ্যাপেন্ড মোডে কাজ করছে।
  • ফাইলে একটি নতুন লাইন যোগ করা হয়েছে।
  • seekg(0) ব্যবহার করে ফাইল পয়েন্টারকে শুরুতে নিয়ে গিয়ে ফাইলের ডেটা পড়া হয়েছে।
  • ফাইল অপারেশন শেষে close() ফাংশন ব্যবহার করে ফাইলটি বন্ধ করা হয়েছে।

মোড সমূহের সংক্ষিপ্ত বিবরণ

C++ এ ফাইল খোলার সময় বিভিন্ন মোড ব্যবহার করা যায়:

  • ios::in: ইনপুট মোড, ফাইল পড়ার জন্য ব্যবহৃত।
  • ios::out: আউটপুট মোড, ফাইলে লেখার জন্য ব্যবহৃত।
  • ios::app: অ্যাপেন্ড মোড, ফাইলের শেষে নতুন ডেটা যোগ করে।
  • ios::trunc: ফাইল খোলার সময় পূর্ববর্তী ডেটা মুছে ফেলে, যা ios::out এর জন্য ডিফল্ট।
  • ios::binary: বাইনারি মোডে ফাইল খোলে।

সংক্ষেপে তুলনা

ক্লাসকাজব্যবহৃত মোড
ifstreamফাইল থেকে পড়া (input)ios::in
ofstreamফাইলে লেখা (output)ios::out, ios::app, ios::trunc
fstreamফাইল পড়া এবং লেখা (input/output)ios::in, ios::out, ios::app, ios::binary

সারসংক্ষেপ

  • ifstream: ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়।
  • ofstream: ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়।
  • fstream: একই ফাইলে পড়া এবং লেখার জন্য ব্যবহৃত হয়।

ফাইল হ্যান্ডলিংয়ের এই তিনটি ক্লাস ব্যবহার করে ফাইলের সাথে কার্যকরভাবে কাজ করা যায় এবং প্রোগ্রামের আউটপুট সংরক্ষণ বা ইনপুট হিসেবে ব্যবহার করা যায়।

common.content_added_by

বাইনারি ফাইল হ্যান্ডলিং

238
238

বাইনারি ফাইল হ্যান্ডলিং C++ এ এমন একটি প্রক্রিয়া যেখানে ডেটা ফাইলের ভিতরে বাইনারি ফর্ম্যাটে সংরক্ষণ বা পড়া হয়। সাধারণত টেক্সট ফাইলের ক্ষেত্রে ডেটা মানব-পঠনযোগ্য থাকে, তবে বাইনারি ফাইলে ডেটা সংরক্ষণ করা হয় বাইনারি ফর্ম্যাটে, যা সরাসরি মেশিন-রিডেবল। এতে করে ফাইলের আকার কম হয় এবং পড়া/লেখার গতি বাড়ে।

C++ এ বাইনারি ফাইল হ্যান্ডলিং

C++ এ বাইনারি ফাইল হ্যান্ডলিং এর জন্য fstream লাইব্রেরির ifstream এবং ofstream ক্লাস ব্যবহার করা হয়। ios::binary মোডটি ব্যবহার করে ফাইল বাইনারি মোডে খোলা হয় এবং ডেটা লিখতে বা পড়তে write() এবং read() মেথড ব্যবহার করা হয়।

বাইনারি ফাইলে লেখা (Writing to a Binary File)

write() মেথড ব্যবহার করে ডেটা বাইনারি ফাইলে লেখা হয়। এর জন্য ডেটার ঠিকানা ও ডেটার সাইজ ইনপুট হিসেবে দিতে হয়।

উদাহরণ: বাইনারি ফাইলে লেখা

#include <iostream>
#include <fstream>
using namespace std;

struct Person {
    char name[20];
    int age;
    float height;
};

int main() {
    Person person1 = {"John Doe", 30, 5.9};

    // বাইনারি ফাইল খোলা এবং ডেটা লেখা
    ofstream outFile("person.dat", ios::binary);
    if (!outFile) {
        cout << "Error opening file for writing." << endl;
        return 1;
    }

    // স্ট্রাকচারের ডেটা বাইনারি ফাইলে লেখা
    outFile.write(reinterpret_cast<char*>(&person1), sizeof(person1));
    outFile.close();

    cout << "Data written to binary file successfully." << endl;
    return 0;
}

বর্ণনা:

  • এখানে Person নামে একটি স্ট্রাকচার ডিফাইন করা হয়েছে, যা name, age, এবং height নামে তিনটি ডেটা মেম্বার ধারণ করে।
  • "person.dat" নামে একটি বাইনারি ফাইল খোলা হয়েছে এবং write() মেথড ব্যবহার করে person1 অবজেক্টের ডেটা লেখা হয়েছে।
  • reinterpret_cast<char*> ব্যবহার করে ডেটার ঠিকানা ক্যারেক্টার পয়েন্টারে রূপান্তর করা হয়েছে।

বাইনারি ফাইল থেকে পড়া (Reading from a Binary File)

read() মেথড ব্যবহার করে ডেটা বাইনারি ফাইল থেকে পড়া হয়। read() মেথডেও ডেটার ঠিকানা এবং ডেটার সাইজ ইনপুট হিসেবে দিতে হয়।

উদাহরণ: বাইনারি ফাইল থেকে পড়া

#include <iostream>
#include <fstream>
using namespace std;

struct Person {
    char name[20];
    int age;
    float height;
};

int main() {
    Person person1;

    // বাইনারি ফাইল খোলা এবং ডেটা পড়া
    ifstream inFile("person.dat", ios::binary);
    if (!inFile) {
        cout << "Error opening file for reading." << endl;
        return 1;
    }

    // স্ট্রাকচারের ডেটা পড়া
    inFile.read(reinterpret_cast<char*>(&person1), sizeof(person1));
    inFile.close();

    // পড়া ডেটা প্রদর্শন করা
    cout << "Name: " << person1.name << endl;
    cout << "Age: " << person1.age << endl;
    cout << "Height: " << person1.height << endl;

    return 0;
}

বর্ণনা:

  • "person.dat" ফাইলটি বাইনারি মোডে খোলা হয়েছে এবং read() মেথড ব্যবহার করে person1 অবজেক্টে ডেটা পড়া হয়েছে।
  • পড়া ডেটা person1 অবজেক্টে সংরক্ষিত হয়েছে এবং পরে cout দিয়ে প্রদর্শন করা হয়েছে।

একাধিক রেকর্ড লেখা ও পড়া

বাইনারি ফাইলে একাধিক রেকর্ড সংরক্ষণ এবং পড়ার জন্য একটি লুপ ব্যবহার করা হয়। প্রতিটি রেকর্ডের জন্য write() এবং read() মেথড কল করা হয়।

উদাহরণ: একাধিক রেকর্ড লেখা

#include <iostream>
#include <fstream>
using namespace std;

struct Person {
    char name[20];
    int age;
    float height;
};

int main() {
    Person persons[2] = { {"Alice", 28, 5.5}, {"Bob", 32, 5.8} };

    // বাইনারি ফাইল খোলা এবং একাধিক রেকর্ড লেখা
    ofstream outFile("persons.dat", ios::binary);
    if (!outFile) {
        cout << "Error opening file for writing." << endl;
        return 1;
    }

    for (int i = 0; i < 2; i++) {
        outFile.write(reinterpret_cast<char*>(&persons[i]), sizeof(persons[i]));
    }
    outFile.close();

    cout << "Multiple records written to binary file successfully." << endl;
    return 0;
}

উদাহরণ: একাধিক রেকর্ড পড়া

#include <iostream>
#include <fstream>
using namespace std;

struct Person {
    char name[20];
    int age;
    float height;
};

int main() {
    Person persons[2];

    // বাইনারি ফাইল খোলা এবং একাধিক রেকর্ড পড়া
    ifstream inFile("persons.dat", ios::binary);
    if (!inFile) {
        cout << "Error opening file for reading." << endl;
        return 1;
    }

    for (int i = 0; i < 2; i++) {
        inFile.read(reinterpret_cast<char*>(&persons[i]), sizeof(persons[i]));
    }
    inFile.close();

    // পড়া ডেটা প্রদর্শন করা
    for (int i = 0; i < 2; i++) {
        cout << "Name: " << persons[i].name << ", Age: " << persons[i].age << ", Height: " << persons[i].height << endl;
    }

    return 0;
}

বাইনারি ফাইল হ্যান্ডলিং এ ব্যবহৃত গুরুত্বপূর্ণ মেথড

write(): ফাইলে বাইনারি ডেটা লেখা হয়।

outFile.write(reinterpret_cast<char*>(&data), sizeof(data));

read(): বাইনারি ফাইল থেকে ডেটা পড়া হয়।

inFile.read(reinterpret_cast<char*>(&data), sizeof(data));

বাইনারি ফাইলের সুবিধা

  1. দ্রুত ডেটা এক্সেস: বাইনারি ফাইল হ্যান্ডলিংয়ের গতি বেশি, কারণ এতে ডেটা সরাসরি মেমোরি ফরম্যাটে সংরক্ষিত থাকে।
  2. ফাইল সাইজ কম: বাইনারি ফাইলের সাইজ ছোট হয়, কারণ এতে অতিরিক্ত ফরম্যাটিং সংরক্ষণ করা হয় না।
  3. ডেটা নিরাপত্তা: ডেটা মানুষের পঠনযোগ্য না থাকায় এটি আরও নিরাপদ থাকে।

সারসংক্ষেপ

  • বাইনারি ফাইলে লেখা: write() মেথড ব্যবহার করে ডেটা ফাইলে লেখা হয়।
  • বাইনারি ফাইল থেকে পড়া: read() মেথড ব্যবহার করে ডেটা ফাইল থেকে পড়া হয়।
  • ডেটা সংরক্ষণ এবং পড়ার জন্য ডেটার ঠিকানা ও সাইজ প্রদান করতে হয়।

বাইনারি ফাইল হ্যান্ডলিং ব্যবহারে ডেটা দ্রুত এবং নিরাপদে সংরক্ষণ এবং পরিচালনা করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion